home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / mozilla-firefox / include / java / jriext.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  21KB  |  647 lines

  1. /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
  2. /* ***** BEGIN LICENSE BLOCK *****
  3.  * Version: NPL 1.1/GPL 2.0/LGPL 2.1
  4.  *
  5.  * The contents of this file are subject to the Netscape Public License
  6.  * Version 1.1 (the "License"); you may not use this file except in
  7.  * compliance with the License. You may obtain a copy of the License at
  8.  * http://www.mozilla.org/NPL/
  9.  *
  10.  * Software distributed under the License is distributed on an "AS IS" basis,
  11.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  12.  * for the specific language governing rights and limitations under the
  13.  * License.
  14.  *
  15.  * The Original Code is mozilla.org code.
  16.  *
  17.  * The Initial Developer of the Original Code is 
  18.  * Netscape Communications Corporation.
  19.  * Portions created by the Initial Developer are Copyright (C) 1998
  20.  * the Initial Developer. All Rights Reserved.
  21.  *
  22.  * Contributor(s):
  23.  *
  24.  * Alternatively, the contents of this file may be used under the terms of
  25.  * either the GNU General Public License Version 2 or later (the "GPL"), or 
  26.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  27.  * in which case the provisions of the GPL or the LGPL are applicable instead
  28.  * of those above. If you wish to allow use of your version of this file only
  29.  * under the terms of either the GPL or the LGPL, and not to allow others to
  30.  * use your version of this file under the terms of the NPL, indicate your
  31.  * decision by deleting the provisions above and replace them with the notice
  32.  * and other provisions required by the GPL or the LGPL. If you do not delete
  33.  * the provisions above, a recipient may use your version of this file under
  34.  * the terms of any one of the NPL, the GPL or the LGPL.
  35.  *
  36.  * ***** END LICENSE BLOCK ***** */
  37.  
  38. /*******************************************************************************
  39.  * Java Runtime Interface -- Extension Interfaces
  40.  ******************************************************************************/
  41.  
  42. #ifndef JRIEXT_H
  43. #define JRIEXT_H
  44.  
  45. #include "jri.h"
  46. #include "minicom.h"
  47.  
  48. #ifdef __cplusplus
  49. extern "C" {
  50. #endif
  51.  
  52. extern const GUID JRINativePkgID;
  53.  
  54. /*******************************************************************************
  55.  * Optional Embedding
  56.  ******************************************************************************/
  57.  
  58. /* Runtime */
  59. extern const GUID JRIRuntimePkgID;
  60.  
  61. typedef struct JRIRuntimeInterface        JRIRuntimeInterface;
  62. typedef const JRIRuntimeInterface*        JRIRuntimeInstance;
  63.  
  64. typedef void
  65. (JRI_CALLBACK* JRICollectionStartProc)(JRIRuntimeInstance* runtime);
  66.  
  67. typedef void
  68. (JRI_CALLBACK* JRICollectionEndProc)(JRIRuntimeInstance* runtime);
  69.  
  70. /* Passed in JRIRuntimeInitargs: */
  71. typedef enum JRIVerifyMode {
  72.     JRIVerifyNone,
  73.     JRIVerifyRemote,
  74.     JRIVerifyAll
  75. } JRIVerifyMode;
  76.  
  77. typedef struct JRIRuntimeInitargsStruct {
  78.     /* Required arguments */
  79.     short                    majorVersion;
  80.     short                    minorVersion;
  81.     jsize                    initialHeapSize;
  82.     jsize                    maxHeapSize;
  83.     JRICollectionStartProc    collectionStartProc;
  84.     JRICollectionEndProc    collectionEndProc;
  85.     JRIVerifyMode            verifyMode;
  86.     int                     insideNavigator;
  87. } JRIRuntimeInitargs;
  88.  
  89. /* JRIIOMode control bits. These can be or'd together */
  90. typedef enum JRIIOModeFlags {
  91.     JRIIOMode_Unrestricted        = ~0,
  92.     JRIIOMode_None                = 0,
  93.     JRIIOMode_AllowStdin        = 0x01,
  94.     JRIIOMode_AllowStdout        = 0x02,
  95.     JRIIOMode_AllowSocket        = 0x04,
  96.     JRIIOMode_AllowFileInput    = 0x08,
  97.     JRIIOMode_AllowFileOutput    = 0x10
  98. } JRIIOModeFlags;
  99.  
  100. typedef enum JRIFSModeFlags {
  101.     JRIFSMode_Unrestricted,    /* no C level filesystem checks */
  102.     JRIFSMode_None        /* no filesystem access allowed */
  103. } JRIFSModeFlags;
  104.  
  105. typedef enum JRIRTModeFlags {
  106.     JRIRTMode_Unrestricted,    /* no C level runtime checks */
  107.     JRIRTMode_None        /* no runtime access allowed */
  108. } JRIRTModeFlags;
  109.  
  110. extern JRI_PUBLIC_API(JRIRuntimeInstance*)
  111. JRI_NewRuntime(JRIRuntimeInitargs* initargs);
  112.  
  113. typedef void
  114. (*JRI_DisposeRuntime_t)(JRIRuntimeInstance* runtime);
  115.  
  116. /*
  117. ** Change the JRI io mode. The JRI io mode is the lowest level security
  118. ** check done by the C implementation of the native i/o methods.
  119. */
  120. typedef void
  121. (*JRI_SetIOMode_t)(JRIRuntimeInstance* runtime, JRIIOModeFlags mode);
  122.  
  123. /*
  124. ** Change the JRI fs mode. The JRI fs mode is the lowest level security
  125. ** check done by the C implementation of the native filesystem methods.
  126. */
  127. typedef void
  128. (*JRI_SetFSMode_t)(JRIRuntimeInstance* runtime, JRIFSModeFlags mode);
  129.  
  130. /*
  131. ** Change the JRI runtime mode. The JRI runtime mode is the lowest
  132. ** level security check done by the C implementation of the native
  133. ** runtime methods.
  134. */
  135. typedef void
  136. (*JRI_SetRTMode_t)(JRIRuntimeInstance* runtime, JRIRTModeFlags mode);
  137.  
  138. /* Environments */
  139.  
  140. typedef JRIEnv*
  141. (*JRI_NewEnv_t)(JRIRuntimeInstance* runtime, void* thread);
  142.  
  143. typedef void
  144. (*JRI_DisposeEnv_t)(JRIEnv* env);
  145.  
  146. typedef JRIRuntimeInstance*
  147. (*JRI_GetRuntime_t)(JRIEnv* env);
  148.  
  149. typedef void*
  150. (*JRI_GetThread_t)(JRIEnv* env);
  151.  
  152. typedef void
  153. (*JRI_SetClassLoader_t)(JRIEnv* env, jref classLoader);
  154.  
  155. struct JRIRuntimeInterface {
  156.     MCOM_QueryInterface_t        QueryInterface;
  157.     MCOM_AddRef_t                AddRef;
  158.     MCOM_Release_t                Release;
  159.     void*                        reserved3;
  160.     JRI_DisposeRuntime_t        DisposeRuntime;
  161.     JRI_SetIOMode_t                SetIOMode;
  162.     JRI_SetFSMode_t                SetFSMode;
  163.     JRI_SetRTMode_t                SetRTMode;
  164.     JRI_NewEnv_t                NewEnv;
  165.     JRI_DisposeEnv_t            DisposeEnv;
  166.     JRI_GetRuntime_t            GetRuntime;
  167.     JRI_GetThread_t                GetThread;
  168.     JRI_SetClassLoader_t        SetClassLoader;
  169. };
  170.  
  171. #define JRI_DisposeRuntime(runtime)        \
  172.     ((*(runtime))->DisposeRuntime(runtime))
  173.  
  174. /*
  175. ** Change the JRI io mode. The JRI io mode is the lowest level security
  176. ** check done by the C implementation of the native i/o methods.
  177. */
  178. #define JRI_SetIOMode(runtime, mode)        \
  179.     ((*(runtime))->SetIOMode(runtime, mode))
  180.  
  181. /*
  182. ** Change the JRI fs mode. The JRI fs mode is the lowest level security
  183. ** check done by the C implementation of the native filesystem methods.
  184. */
  185. #define JRI_SetFSMode(runtime, mode)        \
  186.     ((*(runtime))->SetFSMode(runtime, mode))
  187.  
  188. /*
  189. ** Change the JRI runtime mode. The JRI runtime mode is the lowest
  190. ** level security check done by the C implementation of the native
  191. ** runtime methods.
  192. */
  193. #define JRI_SetRTMode(runtime, mode)        \
  194.     ((*(runtime))->SetRTMode(runtime, mode))
  195.  
  196. /* Environments */
  197.  
  198. #define JRI_NewEnv(runtime, thread)    \
  199.     ((*(runtime))->NewEnv(runtime, thread))
  200.  
  201. #define JRI_DisposeEnv(env)    \
  202.     ((*(env))->DisposeEnv(env))
  203.  
  204. #define JRI_GetRuntime(env)    \
  205.     ((*(env))->GetRuntime(env))
  206.  
  207. #define JRI_GetThread(env)        \
  208.     ((*(env))->GetThread(env))
  209.  
  210. #define JRI_SetClassLoader(env, classLoader)        \
  211.     ((*(env))->SetClassLoader(env, classLoader))
  212.  
  213. /*******************************************************************************
  214.  * Optional Reflection
  215.  ******************************************************************************/
  216.  
  217. extern const GUID JRIReflectionPkgID;
  218.  
  219. typedef struct JRIReflectionInterface    JRIReflectionInterface;
  220. typedef const JRIReflectionInterface*    JRIReflectionEnv;
  221.  
  222. typedef enum JRIAccessFlags {
  223.     /* Field and Method Access */
  224.     JRIAccessPublic            = 0x0001,
  225.     JRIAccessPrivate        = 0x0002,
  226.     JRIAccessProtected        = 0x0004,
  227.     JRIAccessStatic            = 0x0008,
  228.     JRIAccessFinal            = 0x0010,
  229.     JRIAccessSynchronized    = 0x0020,
  230.     JRIAccessNative            = 0x0100,
  231.     /* Class Access */
  232.     JRIAccessInterface        = 0x0200,
  233.     JRIAccessAbstract        = 0x0400
  234. } JRIAccessFlags;
  235.  
  236. typedef jsize
  237. (*JRI_GetClassCount_t)(JRIReflectionEnv* env);
  238.  
  239. typedef jref
  240. (*JRI_GetClass_t)(JRIReflectionEnv* env, jsize index);
  241.  
  242. typedef const char*
  243. (*JRI_GetClassName_t)(JRIReflectionEnv* env, struct java_lang_Class* clazz);
  244.  
  245. typedef jbool
  246. (*JRI_VerifyClass_t)(JRIReflectionEnv* env, struct java_lang_Class* clazz);
  247.  
  248. typedef jref
  249. (*JRI_GetClassSuperclass_t)(JRIReflectionEnv* env, struct java_lang_Class* clazz);
  250.  
  251. /* These next two routines can be used to iterate through all the
  252.    interfaces of a class: */
  253.  
  254. typedef jsize
  255. (*JRI_GetClassInterfaceCount_t)(JRIReflectionEnv* env, struct java_lang_Class* clazz);
  256.  
  257. typedef jref
  258. (*JRI_GetClassInterface_t)(JRIReflectionEnv* env, struct java_lang_Class* clazz, jsize index);
  259.  
  260. /* These next two routines can be used to iterate through all the
  261.    fields of a class, getting info about them: */
  262.  
  263. typedef jsize
  264. (*JRI_GetClassFieldCount_t)(JRIReflectionEnv* env, struct java_lang_Class* clazz);
  265.  
  266. typedef void
  267. (*JRI_GetClassFieldInfo_t)(JRIReflectionEnv* env, struct java_lang_Class* clazz,
  268.                            jsize fieldIndex, char* *fieldName, char* *fieldSig, 
  269.                            JRIAccessFlags *fieldAccess, jref *fieldClass);
  270.  
  271. /* These next two routines can be used to iterate through all the
  272.    methods of a class, getting info about them: */
  273.  
  274. typedef jsize
  275. (*JRI_GetClassMethodCount_t)(JRIReflectionEnv* env, struct java_lang_Class* clazz);
  276.  
  277. typedef void
  278. (*JRI_GetClassMethodInfo_t)(JRIReflectionEnv* env, struct java_lang_Class* clazz,
  279.                             jsize methodIndex, char* *methodName, char* *methodSig, 
  280.                             JRIAccessFlags *methodAccess,
  281.                             jref *methodClass, void* *methodNativeProc);
  282.  
  283. typedef JRIAccessFlags
  284. (*JRI_GetClassAccessFlags_t)(JRIReflectionEnv* env, struct java_lang_Class* clazz);
  285.  
  286. /******************************************************************************/
  287.  
  288. struct JRIReflectionInterface {
  289.     MCOM_QueryInterface_t                QueryInterface;
  290.     MCOM_AddRef_t                        AddRef;
  291.     MCOM_Release_t                        Release;
  292.     void*                                reserved3;
  293.     JRI_GetClassCount_t                    GetClassCount;
  294.     JRI_GetClass_t                        GetClass;
  295.     JRI_GetClassName_t                    GetClassName;
  296.     JRI_VerifyClass_t                    VerifyClass;
  297.     JRI_GetClassSuperclass_t            GetClassSuperclass;
  298.     JRI_GetClassInterfaceCount_t        GetClassInterfaceCount;
  299.     JRI_GetClassInterface_t                GetClassInterface;
  300.     JRI_GetClassFieldCount_t            GetClassFieldCount;
  301.     JRI_GetClassFieldInfo_t                GetClassFieldInfo;
  302.     JRI_GetClassMethodCount_t            GetClassMethodCount;
  303.     JRI_GetClassMethodInfo_t            GetClassMethodInfo;
  304.     JRI_GetClassAccessFlags_t            GetClassAccessFlags;
  305. };
  306.  
  307. #define JRI_GetClassCount(env)    \
  308.     ((*(env))->GetClassCount(env))
  309.  
  310. #define JRI_GetClass(env, index)    \
  311.     ((*(env))->GetClass(env, index))
  312.  
  313. #define JRI_GetClassName(env, clazz)        \
  314.     ((*(env))->GetClassName(env, clazz))
  315.  
  316. #define JRI_VerifyClass(env, clazz)        \
  317.     ((*(env))->VerifyClass(env, clazz))
  318.  
  319. #define JRI_GetClassSuperclass(env, clazz)        \
  320.     ((*(env))->GetClassSuperclass(env, clazz))
  321.  
  322. /* These next two routines can be used to iterate through all the
  323.    interfaces of a class: */
  324.  
  325. #define JRI_GetClassInterfaceCount(env, clazz)    \
  326.     ((*(env))->GetClassInterfaceCount(env, clazz))
  327.  
  328. #define JRI_GetClassInterface(env, clazz, index)    \
  329.     ((*(env))->GetClassInterface(env, clazz, index))
  330.  
  331. /* These next two routines can be used to iterate through all the
  332.    fields of a class, getting info about them: */
  333.  
  334. #define JRI_GetClassFieldCount(env, clazz)        \
  335.     ((*(env))->GetClassFieldCount(env, clazz))
  336.  
  337. #define JRI_GetClassFieldInfo(env, clazz, fieldIndex, fieldName, fieldSig, fieldAccess, fieldClass)    \
  338.     ((*(env))->GetClassFieldInfo(env, clazz, fieldIndex, fieldName, fieldSig, fieldAccess, fieldClass))
  339.  
  340. /* These next two routines can be used to iterate through all the
  341.    methods of a class, getting info about them: */
  342.  
  343. #define JRI_GetClassMethodCount(env, clazz)        \
  344.     ((*(env))->GetClassMethodCount(env, clazz))
  345.  
  346. #define JRI_GetClassMethodInfo(env, clazz, methodIndex, methodName, methodSig, methodAccess, methodClass, methodNativeProc)        \
  347.     ((*(env))->GetClassMethodInfo(env, clazz, methodIndex, methodName, methodSig, methodAccess, methodClass, methodNativeProc))
  348.  
  349. #define JRI_GetClassAccessFlags(env, clazz)        \
  350.     ((*(env))->GetClassAccessFlags(env, clazz))
  351.  
  352. /*******************************************************************************
  353.  * Optional Debugger
  354.  ******************************************************************************/
  355.  
  356. extern const GUID JRIDebuggerPkgID;
  357.  
  358. typedef struct JRIDebuggerInterface    JRIDebuggerInterface;
  359. typedef const JRIDebuggerInterface*    JRIDebuggerEnv;
  360.  
  361. /* Manipulating Stacks */
  362.  
  363. typedef jsize
  364. (*JRI_GetFrameCount_t)(JRIDebuggerEnv* env);
  365.  
  366. typedef jbool
  367. (*JRI_GetFrameInfo_t)(JRIDebuggerEnv* env, jsize frameIndex,
  368.                   jref *methodClass, jsize *methodIndex,
  369.                   jsize *pc, jsize *varsCount);
  370.  
  371. typedef void
  372. (*JRI_GetVarInfo_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex,
  373.                     char* *name, char* *signature,
  374.                     jbool *isArgument, jsize *startScope, jsize *endScope);
  375.  
  376. #define JRIVarNotInScope    ((JRIFieldID)-1)
  377.  
  378. typedef void
  379. (*JRI_GetSourceInfo_t)(JRIDebuggerEnv* env, jsize frameIndex,
  380.                    const char* *filename, jsize *lineNumber);
  381.  
  382. /******************************************************************************/
  383.  
  384. typedef jref
  385. (*JRI_GetVar_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex);
  386.  
  387. typedef jbool
  388. (*JRI_GetVar_boolean_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex);
  389.  
  390. typedef jbyte
  391. (*JRI_GetVar_byte_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex);
  392.  
  393. typedef jchar
  394. (*JRI_GetVar_char_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex);
  395.  
  396. typedef jshort
  397. (*JRI_GetVar_short_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex);
  398.  
  399. typedef jint
  400. (*JRI_GetVar_int_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex);
  401.  
  402. typedef jlong
  403. (*JRI_GetVar_long_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex);
  404.  
  405. typedef jfloat
  406. (*JRI_GetVar_float_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex);
  407.  
  408. typedef jdouble
  409. (*JRI_GetVar_double_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex);
  410.  
  411. /******************************************************************************/
  412.  
  413. typedef void
  414. (*JRI_SetVar_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex, jref value);
  415.  
  416. typedef void
  417. (*JRI_SetVar_boolean_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex, jbool value);
  418.  
  419. typedef void
  420. (*JRI_SetVar_byte_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex, jbyte value);
  421.  
  422. typedef void
  423. (*JRI_SetVar_char_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex, jchar value);
  424.  
  425. typedef void
  426. (*JRI_SetVar_short_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex, jshort value);
  427.  
  428. typedef void
  429. (*JRI_SetVar_int_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex, jint value);
  430.  
  431. typedef void
  432. (*JRI_SetVar_long_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex, jlong value);
  433.  
  434. typedef void
  435. (*JRI_SetVar_float_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex, jfloat value);
  436.  
  437. typedef void
  438. (*JRI_SetVar_double_t)(JRIDebuggerEnv* env, jsize frameIndex, jsize varIndex, jdouble value);
  439.  
  440. /******************************************************************************/
  441.  
  442. /* Controlling Execution */
  443.  
  444. typedef void
  445. (*JRI_StepOver_t)(JRIDebuggerEnv* env);
  446.  
  447. typedef void
  448. (*JRI_StepIn_t)(JRIDebuggerEnv* env);
  449.  
  450. typedef void
  451. (*JRI_StepOut_t)(JRIDebuggerEnv* env);
  452.  
  453. typedef void
  454. (*JRI_Continue_t)(JRIDebuggerEnv* env);
  455.  
  456. typedef void
  457. (*JRI_Return_t)(JRIDebuggerEnv* env, jsize frameIndex, JRIValue value);
  458.  
  459. /******************************************************************************/
  460.  
  461. struct JRIDebuggerInterface {
  462.     MCOM_QueryInterface_t        QueryInterface;
  463.     MCOM_AddRef_t                AddRef;
  464.     MCOM_Release_t                Release;
  465.     void*                        reserved3;
  466.     JRI_GetFrameCount_t            GetFrameCount;
  467.     JRI_GetFrameInfo_t            GetFrameInfo;
  468.     JRI_GetVarInfo_t            GetVarInfo;
  469.     JRI_GetSourceInfo_t            GetSourceInfo;
  470.     JRI_GetVar_t                GetVar;
  471.     JRI_GetVar_boolean_t        GetVar_boolean;
  472.     JRI_GetVar_byte_t            GetVar_byte;
  473.     JRI_GetVar_char_t            GetVar_char;
  474.     JRI_GetVar_short_t            GetVar_short;
  475.     JRI_GetVar_int_t            GetVar_int;
  476.     JRI_GetVar_long_t            GetVar_long;
  477.     JRI_GetVar_float_t            GetVar_float;
  478.     JRI_GetVar_double_t            GetVar_double;
  479.     JRI_SetVar_t                SetVar;
  480.     JRI_SetVar_boolean_t        SetVar_boolean;
  481.     JRI_SetVar_byte_t            SetVar_byte;
  482.     JRI_SetVar_char_t            SetVar_char;
  483.     JRI_SetVar_short_t            SetVar_short;
  484.     JRI_SetVar_int_t            SetVar_int;
  485.     JRI_SetVar_long_t            SetVar_long;
  486.     JRI_SetVar_float_t            SetVar_float;
  487.     JRI_SetVar_double_t            SetVar_double;
  488.     JRI_StepOver_t                StepOver;
  489.     JRI_StepIn_t                StepIn;
  490.     JRI_StepOut_t                StepOut;
  491.     JRI_Continue_t                Continue;
  492.     JRI_Return_t                Return;
  493. };
  494.  
  495.  
  496. #define JRI_GetFrameCount(env)    \
  497.     ((*(env))->GetFrameCount(env))
  498.  
  499. #define JRI_GetFrameInfo(env, frameIndex, methodClass, methodIndex, pc, varsCount)    \
  500.     ((*(env))->GetFrameInfo(env, frameIndex, methodClass, methodIndex, pc, varsCount))
  501.  
  502. #define JRI_GetVarInfo(env, frameIndex, varIndex, name, signature, pos, isArgument, startScope, endScope)        \
  503.     ((*(env))->GetVarInfo(env, frameIndex, varIndex, name, signature, pos, isArgument, startScope, endScope))
  504.  
  505. #define JRI_GetSourceInfo(env, frameIndex, filename, lineNumber)    \
  506.     ((*(env))->GetSourceInfo(env, frameIndex, filename, lineNumber))
  507.  
  508. /******************************************************************************/
  509.  
  510. #define JRI_GetVar(env, frameIndex, varIndex)        \
  511.     ((*(env))->GetVar(env, frameIndex, varIndex))
  512.  
  513. #define JRI_GetVar_boolean(env, frameIndex, varIndex)        \
  514.     ((*(env))->GetVar_boolean(env, frameIndex, varIndex))
  515.  
  516. #define JRI_GetVar_byte(env, frameIndex, varIndex)    \
  517.     ((*(env))->GetVar_byte(env, frameIndex, varIndex))
  518.  
  519. #define JRI_GetVar_char(env, frameIndex, varIndex)    \
  520.     ((*(env))->GetVar_char(env, frameIndex, varIndex))
  521.  
  522. #define JRI_GetVar_short(env, frameIndex, varIndex)        \
  523.     ((*(env))->GetVar_short(env, frameIndex, varIndex))
  524.  
  525. #define JRI_GetVar_int(env, frameIndex, varIndex)    \
  526.     ((*(env))->GetVar_int(env, frameIndex, varIndex))
  527.  
  528. #define JRI_GetVar_long(env, frameIndex, varIndex)    \
  529.     ((*(env))->GetVar_long(env, frameIndex, varIndex))
  530.  
  531. #define JRI_GetVar_float(env, frameIndex, varIndex)        \
  532.     ((*(env))->GetVar_float(env, frameIndex, varIndex))
  533.  
  534. #define JRI_GetVar_double(env, frameIndex, varIndex)        \
  535.     ((*(env))->GetVar_double(env, frameIndex, varIndex))
  536.  
  537. /******************************************************************************/
  538.  
  539. #define JRI_SetVar(env, frameIndex, varIndex, value)    \
  540.     ((*(env))->SetVar(env, frameIndex, varIndex, value))
  541.  
  542. #define JRI_SetVar_boolean(env, frameIndex, varIndex, value)    \
  543.     ((*(env))->SetVar_boolean(env, frameIndex, varIndex, value))
  544.  
  545. #define JRI_SetVar_byte(env, frameIndex, varIndex, value)    \
  546.     ((*(env))->SetVar_byte(env, frameIndex, varIndex, value))
  547.  
  548. #define JRI_SetVar_char(env, frameIndex, varIndex, value)    \
  549.     ((*(env))->SetVar_char(env, frameIndex, varIndex, value))
  550.  
  551. #define JRI_SetVar_short(env, frameIndex, varIndex, value)    \
  552.     ((*(env))->SetVar_short(env, frameIndex, varIndex, value))
  553.  
  554. #define JRI_SetVar_int(env, frameIndex, varIndex, value)        \
  555.     ((*(env))->SetVar_int(env, frameIndex, varIndex, value))
  556.  
  557. #define JRI_SetVar_long(env, frameIndex, varIndex, value)    \
  558.     ((*(env))->SetVar_long(env, frameIndex, varIndex, value))
  559.  
  560. #define JRI_SetVar_float(env, frameIndex, varIndex, value)    \
  561.     ((*(env))->SetVar_float(env, frameIndex, varIndex, value))
  562.  
  563. #define JRI_SetVar_double(env, frameIndex, varIndex, value)        \
  564.     ((*(env))->SetVar_double(env, frameIndex, varIndex, value))
  565.  
  566. /******************************************************************************/
  567.  
  568. /* Controlling Execution */
  569.  
  570. #define JRI_StepOver(env)        \
  571.     ((*(env))->StepOver(env))
  572.  
  573. #define JRI_StepIn(env)        \
  574.     ((*(env))->StepIn(env))
  575.  
  576. #define JRI_StepOut(env)        \
  577.     ((*(env))->StepOut(env))
  578.  
  579. #define JRI_Continue(env)        \
  580.     ((*(env))->Continue(env))
  581.  
  582. #define JRI_Return(env, frameIndex, value)        \
  583.     ((*(env))->Return(env, frameIndex, value))
  584.  
  585. /*******************************************************************************
  586.  * Optional Compiling
  587.  ******************************************************************************/
  588.  
  589. extern const GUID JRICompilerPkgID;
  590.  
  591. typedef struct JRICompilerInterface    JRICompilerInterface;
  592. typedef const JRICompilerInterface*    JRICompilerEnv;
  593.  
  594. typedef void
  595. (*JRI_CompileClass_t)(JRICompilerEnv* env,
  596.                       const char* classSrc, jsize classSrcLen,
  597.                       jbyte* *resultingClassData, jsize *classDataLen);
  598.  
  599. struct JRICompilerInterface {
  600.     MCOM_QueryInterface_t    QueryInterface;
  601.     MCOM_AddRef_t            AddRef;
  602.     MCOM_Release_t            Release;
  603.     void*                    reserved3;
  604.     JRI_CompileClass_t        CompileClass;
  605. };
  606.  
  607. #define JRI_CompileClass(env, classSrc, classSrcLen, resultingClassData, classDataLen)        \
  608.     ((*(env))->CompileClass(env, classSrc, classSrcLen, resultingClassData, classDataLen))
  609.  
  610. /*******************************************************************************
  611.  * Optional Expression Evaluation
  612.  ******************************************************************************/
  613.  
  614. extern const GUID JRIExprPkgID;
  615.  
  616. typedef struct JRIExprInterface    JRIExprInterface;
  617. typedef const JRIExprInterface*    JRIExprEnv;
  618.  
  619. typedef jref
  620. (*JRI_CompileExpr_t)(JRIExprEnv* env,
  621.                      const char* exprSrc, jsize exprSrcLen);
  622.  
  623. typedef jref
  624. (*JRI_EvalExpr_t)(JRIExprEnv* env, jref expr);
  625.  
  626. struct JRIExprInterface {
  627.     MCOM_QueryInterface_t    QueryInterface;
  628.     MCOM_AddRef_t            AddRef;
  629.     MCOM_Release_t            Release;
  630.     void*                    reserved3;
  631.     JRI_CompileExpr_t        CompileExpr;
  632.     JRI_EvalExpr_t            EvalExpr;
  633. };
  634.  
  635. #define JRI_CompileExpr(env, exprSrc, exprSrcLen)        \
  636.     ((*(env))->CompileExpr(env, exprSrc, exprSrcLen))
  637.  
  638. #define JRI_EvalExpr(env, expr)        \
  639.     ((*(env))->EvalExpr(env, expr))
  640.  
  641. /******************************************************************************/
  642. #ifdef __cplusplus
  643. }
  644. #endif
  645. #endif /* JRIEXT_H */
  646. /******************************************************************************/
  647.